"""
基础的卷积
"""

import torch

# 定义数据
input = [
    1, 5, 6, 8, 7,
    5, 6, 9, 8, 0,
    7, 9, 5, 2, 4,
    5, 6, 9, 8, 3,
    4, 7, 8, 2, 9,
]
# 转换到tensor,卷积模型要求数值的类型为浮点数
input = torch.tensor(input, dtype=torch.float32)
print(input)
# 转换维度,batch size,channel,width,height
input = input.view(1, 1, 5, 5)
# 定义卷积模型,这里使用2维卷积模型,卷积核为3*3,外围扩容1使得输出和输入保持一致的size,bias偏移为0
model = torch.nn.Conv2d(1, 1, 3, padding=1, bias=False)
# 使用自定义的卷积核(1~9),转换维度(outChannel,inChannel,w,h)
kernel = torch.tensor(list(range(1, 10)), dtype=torch.float32).view(1, 1, 3, 3)
model.weight.data = kernel.data
# 卷积,计算输出
output: torch.Tensor = model(input)
print(output.numel())
